package com.hyt.it.ogt.kq.common.gov.constant;

import com.hyt.it.ogt.kq.common.config.exception.KqException;
import lombok.Getter;

/**
 * 任务考试类型枚举
 *
 * @author huangyh
 * @since 2021-11-22
 */
@Getter
public enum TaskExamTypeEnum {

    /**
     * 任务考试类型-线上机考
     */
    ONLINE("1"),

    /**
     * 任务考试类型-线下机考
     */
    OFFLINE("2"),

    ;

    /**
     * 类型编码
     */
    private final String code;

    TaskExamTypeEnum(String code) {
        this.code = code;
    }

    /**
     * 根据枚举code获取任务考试类型枚举
     * @param code 枚举code
     * @return 任务考试类型枚举
     * @throws KqException 任务考试类型不存在
     */
    public static TaskExamTypeEnum getByCode(String code) throws KqException {
        for (TaskExamTypeEnum value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        throw new KqException(ResponseCode.TASK_EXAM_TYPE_NOT_FOUND.getCode(),
                ResponseCode.TASK_EXAM_TYPE_NOT_FOUND.getMsg());
    }

    /**
     * 根据名称获取任务考试类型枚举
     * @param name 名称
     * @return 任务考试类型枚举
     * @throws KqException 任务考试类型不存在
     */
    public static TaskExamTypeEnum getByName(String name) throws KqException {
        try {
            return TaskExamTypeEnum.valueOf(name);
        } catch (IllegalArgumentException i) {
            throw new KqException(ResponseCode.TASK_EXAM_TYPE_NOT_FOUND.getCode(),
                    ResponseCode.TASK_EXAM_TYPE_NOT_FOUND.getMsg());
        }
    }

}
